#!/usr/bin/lua
ApmReadByte ={}

-- 读取1个int(4)的数据，进行大小端转换
-- arg:
--   s_data: 需要读取的字符串(string)
--   little_endpoint: 大小端 true:小端 false:大端(bool)
-- return:
--   int的数据
--   读取失败(nil)
function ApmReadByte.readInt(s_data, little_endpoint)
    
    if (type(s_data) ~= "string" or string.len(s_data) < 4) then
        return nil
    end
    local obj_bytearray = require("ApmByteArray")
    local t_bytearray = obj_bytearray.new()
    
    if (little_endpoint == true) then
        t_bytearray:setEndian("ENDIAN_LITTLE")
    else
        t_bytearray:setEndian("ENDIAN_BIG")
    end

    t_bytearray:writeBuf(s_data)
    t_bytearray:setPos(1)
    return t_bytearray:readInt()
end

-- 读取1个short(2)的数据，进行大小端转换
-- arg:
--   s_data: 需要读取的字符串(string)
--   little_endpoint: 大小端 true:小端 false:大端(bool)
-- return:
--   short的数据
--   读取失败(nil)
function ApmReadByte.readShort(s_data, little_endpoint)
    
    if (type(s_data) ~= "string" or string.len(s_data) < 2) then
        return nil
    end
    local obj_bytearray = require("ApmByteArray")
    local t_bytearray = obj_bytearray.new()
    
    if (little_endpoint == true) then
        t_bytearray:setEndian("ENDIAN_LITTLE")
    else
        t_bytearray:setEndian("ENDIAN_BIG")
    end

    t_bytearray:writeBuf(s_data)
    t_bytearray:setPos(1)
    return t_bytearray:readShort()
end

-- 读取1个double(8)的数据，进行大小端转换
-- arg:
--   s_data: 需要读取的字符串(string)
--   little_endpoint: 大小端 true:小端 false:大端(bool)
-- return:
--   double的数据
--   读取失败(nil)
function ApmReadByte.readDouble(s_data, little_endpoint)
    
    if (type(s_data) ~= "string" or string.len(s_data) < 8) then
        return nil
    end
    local obj_bytearray = require("ApmByteArray")
    local t_bytearray = obj_bytearray.new()
    
    if (little_endpoint == true) then
        t_bytearray:setEndian("ENDIAN_LITTLE")
    else
        t_bytearray:setEndian("ENDIAN_BIG")
    end

    t_bytearray:writeBuf(s_data)
    t_bytearray:setPos(1)
    return t_bytearray:readDouble()
end

return ApmReadByte
